// 泛型类
class Alg<T extends Comparable<T>> {
    public T findMaxValue(T[] arr) {
        T max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(max.compareTo(arr[i]) < 0) {
                max = arr[i];
            }
        }
        return max;
    }
}
// 泛型方法
class Alg2 {
    public<T extends Comparable<T>>  T findMaxValue(T[] arr) {
        T max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(max.compareTo(arr[i]) < 0) {
                max = arr[i];
            }
        }
        return max;
    }
}

// 静态泛型方法
class Alg3 {
    public static  <T extends Comparable<T>>  T findMaxValue(T[] arr) {
        T max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(max.compareTo(arr[i]) < 0) {
                max = arr[i];
            }
        }
        return max;
    }
}

public class Test {

    public static void main(String[] args) {
        Integer[] arr = {1, 2, 5 , 17 , 6 , 4 , 99};
        Integer ret = Alg3.findMaxValue(arr);
        System.out.println(ret);
    }


//    public static void main(String[] args) {
//        Alg2 alg2 = new Alg2();
//        Integer[] arr = {1, 2, 5 , 17 , 6 , 4 , 9};
//        Integer ret = alg2.findMaxValue(arr);
//        System.out.println(ret);
//    }
//    public static void main(String[] args) {
//        Alg<Integer> alg = new Alg<>();
//        Integer[] arr = {1, 2, 5 , 7 , 6 , 4 , 9};
//        Integer ret = alg.findMaxValue(arr);
//        System.out.println(ret);
//
//    }
}
